package com.taobao.easyweb.orm.datasource;
import com.taobao.easyweb.core.app.App;
import com.taobao.easyweb.core.app.deploy.DeployException;
import com.taobao.easyweb.core.app.deploy.DeployPhase;
import com.taobao.easyweb.core.app.deploy.Deployer;
import com.taobao.easyweb.core.app.deploy.process.FileProcessor;
import com.taobao.easyweb.core.app.scanner.ScanResult;
import com.taobao.tddl.jdbc.group.TGroupDataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.lang.StringUtils;
import org.nutz.dao.impl.SimpleDataSource;
import org.springframework.stereotype.Component;
import java.io.FileInputStream;
import java.util.List;
import java.util.Properties;
/**
* User: jimmey/shantong
* DateTime: 13-3-31 ����5:23
*/
@Component
@Deployer(DeployPhase.PARSE_CONFIG)
public class DataSourceProcessor extends FileProcessor {
@Override
public void process(ScanResult result) throws DeployException {
List<String> list = result.getSuffixFiles(".properties");
if (list.isEmpty()) {
return;
}
App app = result.getApp();
for (String file : list) {
if (!file.endsWith("datasource.properties")) {
continue;
}
Properties properties = new Properties();
try {
properties.load(new FileInputStream(file));
} catch (Exception e) {
}
String type = properties.getProperty("ds.type");
String name = properties.getProperty("ds.name");
String driverClassName = properties.getProperty("ds.driverClassName");
String url = properties.getProperty("ds.url");
String username = properties.getProperty("ds.username", "");
String password = properties.getProperty("ds.password", "");
if ("simple".equals(type)) {
SimpleDataSource dataSource = new SimpleDataSource();
try {
dataSource.setDriverClassName(driverClassName);
} catch (ClassNotFoundException e) {
}
dataSource.setJdbcUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
DatasourceFactory.regist(app, name, dataSource);
} else if ("tddl".equals(type)) {//tddl�IJ���spring beanע��
String appName = properties.getProperty("tddl.appName");
String dbGroupKey = properties.getProperty("tddl.dbGroupKey");
if (StringUtils.isBlank(appName) || StringUtils.isBlank(dbGroupKey)) {
throw new RuntimeException("tddl datasource config error");
}
TGroupDataSource dataSource = new TGroupDataSource();
dataSource.setAppName(appName);
dataSource.setDbGroupKey(dbGroupKey);
dataSource.init();
DatasourceFactory.regist(app, name, dataSource);
} else if ("dbcp".equals(type)) {
BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName(driverClassName);
basicDataSource.setUrl(url);
basicDataSource.setUsername(username);
basicDataSource.setPassword(password);
DatasourceFactory.regist(app, name, basicDataSource);
}
}
}
}